package com.itany.corejava.code14_lambda;

import java.util.function.Consumer;

/**
 * @author 石小俊
 * @date 2023年05月30日 15:50
 */
public class Test02_消费型接口 {

    public static void main(String[] args) {
        // 匿名内部类的方式
        testConsumer(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println("学习Java太辛苦了,我们需要去" + s + "睡一觉");
            }
        }, "走廊");

        // Lambda表达式方法
        testConsumer(s -> System.out.println("学习Java太辛苦了,我们需要去" + s + "睡一觉"), "楼道");
    }

    /**
     * 消费型接口Consumer<T>,接口方法:void accept(T t)
     * 其接口的泛型类型与调用accept方法时传入的参数类型一致
     * 由于此处方法并不是最终的方法调用者,此处方法仍然会被调用
     * 因此,可以使用形参作为accept方法的参数
     * @param consumer
     * @param param
     */
    public static void testConsumer(Consumer<String> consumer, String param) {
        consumer.accept(param);
    }

}
